package br.ufpe.cin.ip.biblioteca.tad;

import br.ufpe.cin.ip.biblioteca.entidades.Publicacao;
import br.ufpe.cin.ip.biblioteca.iterator.IteratorPublicacao;
import br.ufpe.cin.ip.biblioteca.iterator.IteratorPublicacaoLista;

public class ListaPublicacao {
	private Publicacao publicacao;
	private ListaPublicacao proximo;
	
	public ListaPublicacao(Publicacao publicacao) {
		this.publicacao = publicacao;
		this.proximo = null;
	}
	
	public void inserir(Publicacao publicacao) {
		if(this.proximo==null) {
			this.proximo = new ListaPublicacao(publicacao);
		} else {
			this.proximo.inserir(publicacao);
		}
	}
	
	public void remover(Publicacao publicacao) {
		if(this.publicacao!=null) {
			if(this.publicacao.equals(publicacao)) {
				this.publicacao = this.proximo.publicacao;
				this.proximo = this.proximo.proximo;
			} else {
				this.proximo.remover(publicacao);
			}
		}
	}
	
	public IteratorPublicacao getIterator() {
		return new IteratorPublicacaoLista(this);
	}
	
	public Publicacao getPublicacao() {
		return this.publicacao;
	}

	public void setPublicacao(Publicacao publicacao) {
		this.publicacao = publicacao;
	}

	public ListaPublicacao getProximo() {
		return this.proximo;
	}

	public void setProximo(ListaPublicacao proximo) {
		this.proximo = proximo;
	}
}
